#ifndef __PLAYER_H
#define __PLAYER_H

// codes that determine how to move the player
#define PLAYER_MOVE_NONE	0
#define PLAYER_MOVE_UP		1
#define PLAYER_MOVE_DOWN	2
#define PLAYER_MOVE_LEFT	3
#define PLAYER_MOVE_RIGHT	4
#define PLAYER_MOVE_POSIBILITIES	5

class Player
{
public:
	int m_x, m_y;
protected:
	char m_icon;
	// will hold the next move until update is called
	int m_nextMoveToMake;
public:
	Player();
	Player(int a_x, int a_y, char a_icon);
	// move based on one of the defines above
	void move(int a_code);
	int getX();
	int getY();
	int setX(int a_value);
	int setY(int a_value);
	char getIcon();
	char setIcon(char a_icon);
	// replace if(getX()==m_x && getY()==m_y)
	bool isAt(int a_x, int a_y);
	// ms: time since last update, g: game that player exists in (AI may want this data...)
	virtual void update(long a_ms);
	void setNextMove(int a_code);
	void move();
};

#endif
